/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.benkyou.util;

import com.benkyou.client.systems.ImagingSystem;
import com.jme3.texture.Image;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Transparency;
import java.awt.geom.AffineTransform;
import java.awt.geom.NoninvertibleTransformException;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.nio.ByteBuffer;
import java.util.logging.Level;
import java.util.logging.Logger;
import jme3tools.converters.ImageToAwt;

/**
 *
 * @author student
 */
public class TextImageGenerator {
    private BufferedImage bi;
    private String text;
    private Graphics2D g2d;
    public TextImageGenerator(String text){
        this.text = text;
        bi = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB);
        g2d = (Graphics2D) bi.getGraphics();
    }
    public Image getTextImage(){
        Font f = new Font("Dialog", Font.PLAIN, 100);
        g2d.setFont(f);
        g2d.drawString(text, 10f, 350f);
        AffineTransform tx = new AffineTransform();
        
        tx = AffineTransform.getScaleInstance(-1, 1);
        tx.translate(-bi.getWidth(null), 0);
        
        tx.rotate(Math.PI, bi.getWidth()/2, bi.getHeight()/2);
        
        AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
        bi = op.filter(bi, null);
        ByteBuffer byteBuffer = ByteBuffer.allocateDirect((bi.getHeight() * bi.getWidth() * 4));  
        byteBuffer.clear();
        ImageToAwt.convert(bi, ImagingSystem.jmeformat, byteBuffer);
        Image im = new Image(ImagingSystem.jmeformat, bi.getWidth(), bi.getHeight(), byteBuffer.duplicate(), null);
        return im;
    }
    
}
